﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace callbackFunction1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 3;
            int b = 5;
            AddCaculate(a, b, GetSum);
            AddCaculate(a, b, GetMulit);
            
            
            Console.ReadKey();

        }
        //C#中的委托可以理解为函数的一个包装,它使得C#中的函数可以作为参数来被传递
        //事件或条件发生时由另外的一方调用，用于对事件或条件的响应。
        public delegate int Cal(int a,int b);

        static void AddCaculate(int a, int b, Cal cal)
        {
            Console.WriteLine("第一个数是{0}，第二个数是{1}", a, b);
            cal(a, b);
        }

        static int GetSum(int a, int b)
        {
            Console.WriteLine("结果为{0}", a + b);
            return a + b;
        }
        static int GetMulit(int a, int b)
        {
            Console.WriteLine("结果为{0}", a * b);
            return a * b;
        }


    }
}
